package com.wind;

import com.alibaba.excel.EasyExcel;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class EasyTest {

    // 导出Test
    /**
     * 最简单的写
     * <p>1. 创建excel对应的实体对象
     * <p>2. 直接写即可
     */
    @Test
    public void simpleWrite() {
        /**
         * @作者： ✎…SummerWind🌬🌬
         * @描述： 写法1
        */
        String fileName = "C:\\Users\\Wind\\Documents\\GOMPlayer\\excel.xlsx";
        /*
            参数解释：
                fileName：磁盘保存路径 + 文件名带后缀
                bean.class：指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭。如果这里想使用03 则 传入excelType参数即可
                data()：封装返回List<bean>的具体逻辑，一个对象是一行
         */
        EasyExcel.write(fileName, bean.class).sheet(3,"模板").doWrite(data()); // 所谓的链式编程, 哦哈哈~！

        /**
         * @作者： ✎…SummerWind🌬🌬
         * @描述： 写法2
         */
        /*
        fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写
        ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();
        WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
        excelWriter.write(data(), writeSheet);
        // 千万别忘记finish 会帮忙关闭流
        excelWriter.finish();
        */
    }
    /**
     * @作者： ✎…SummerWind🌬🌬
     * @描述： 具体的写入逻辑
    */
    private List<bean> data() {
        List<bean> list = new ArrayList<bean>();
        for (int i = 0; i < 10; i++) {
            bean data = new bean();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

    // 导入
    /**
     * 最简单的读
     * <p>1. 创建excel对应的实体对象
     * <p>2. 由于默认一行行的读取excel，所以需要创建excel一行一行的回调监听器
     * <p>3. 直接读即可
     */
    @Test
    public void simpleRead() {
        // 有个很重要的点 DemoDataListener 不能被spring管理，要每次读取excel都要new,然后里面用到spring可以构造方法传进去
        /**
         * @作者： ✎…SummerWind🌬🌬
         * @描述： 写法1
         */
        String fileName = "D:\\DevWorkSpace\\IdeaProject\\easyExcelTest\\excel.xlsx";
        // 这里 需要
        /*
            参数解释：
                fileName：磁盘保存路径 + 文件名带后缀
                bean.class：指定读用哪个class去读
                new DemoDataListener：
                sheet()：默认读取第一个sheet；可选参数：Integer sheetNo == String sheetName
                doRead()：读完后 文件流会自动关闭
         */
        EasyExcel.read(fileName, bean.class, new DemoDataListener())
                .sheet()
                .doRead();

        /**
         * @作者： ✎…SummerWind🌬🌬
         * @描述： 写法2
         */
        /*
        fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).build();
        ReadSheet readSheet = EasyExcel.readSheet(0).build();
        excelReader.read(readSheet);
        // 这里千万别忘记关闭，读的时候会创建临时文件，到时磁盘会崩的
        excelReader.finish();
        */
    }
}
